package com.kinyx.framework.bean;

import org.junit.Assert;
import org.junit.Test;

public class StringFormatter_Tester {

	@Test
	public void test0() {
		Assert.assertEquals("", StringFormatter.of().format());
		Assert.assertEquals("str", StringFormatter.of().s("str").format());
		Assert.assertEquals("str", StringFormatter.of().s("%s").p("str").format());
		Assert.assertEquals("str", StringFormatter.of().x("%s", "str").format());
	}

	@Test
	public void test1() {
		// 将返回值拼接到参数中
		Assert.assertEquals("str", StringFormatter.of().x("%s", () -> { return "str"; }).format());
		// 返回值为Formatter.Type.Ignore时，将忽略该段格式的拼接。
		Assert.assertEquals("", StringFormatter.of().x("%s", () -> { return StringFormatter.Type.Ignore; }).format());
		// 返回值为Formatter.Type.NoArg时，将拼接该段格式，但不拼接参数。
		Assert.assertEquals("%s", StringFormatter.of().x("%s", () -> { return StringFormatter.Type.NoArg; }).format());
	}

	@Test
	public void test2() {
		// 验证器返回true时，将拼接参数。
		Assert.assertEquals("str", StringFormatter.of().x("%s", () -> { return true; }, "str").format());
		// 验证器返回false时，将忽略拼接参数。
		Assert.assertEquals("", StringFormatter.of().x("%s", () -> { return false; }, "str").format());
	}

	@Test
	public void test3() {
		// 验证器返回true时，将拼接参数。
		Assert.assertEquals("str", StringFormatter.of().x("%s", () -> { return true; }, () -> { return "str"; }).format());
		// 验证器返回false时，将忽略拼接参数。
		Assert.assertEquals("", StringFormatter.of().x("%s", () -> { return false; }, () -> { return "str"; }).format());
	}

}
